再來複習一下 Google Slides 的架構:
今天來說說 TextRange(文字範圍) & ParagraphStyle(段落樣式) 這兩個元素!
TextRange 代表 Shape 內的文字範圍。可用來操作形狀(特別是文字框)中的文字內容和格式。TextRange 可以包含多個段落,每個段落又可以有自己的樣式和格式。
TextRange 用於操作形狀內的文字。可以使用 getText() 拿到文字內容,使用 setText() 來修改文字。TextRange 可以包含多個段落,可以使用 getParagraphs() 獲取其中的段落範圍。getTextStyle() 可設定或獲取某個文字範圍的字體樣式(例如字體、大小、粗體、斜體等)。Ex: 要把矩形中的文字改成"新的文字內容",並設定字體大小為 40

function modifyTextInShape() {
  var presentation = SlidesApp.getActivePresentation();
  var slide = presentation.getSlides()[0];
  var shape = slide.getShapes()[0]; // 假設第一個形狀是我們要操作的
  var textRange = shape.getText(); // 獲取形狀內的文字範圍
  var text = textRange.asString();
  Logger.log("old content: "+ text);
  textRange.setText('新的文字內容'); // 設定新的文字
  textRange.getTextStyle().setFontSize(40); // 設定字體大小為 40
}


ParagraphStyle 是 TextRange 的一部分,用於定義段落的格式和樣式。每個段落都有一個與之關聯的 ParagraphStyle,可設定段落的對齊方式、縮進、行距等格式。
ParagraphStyle 提供設置段落格式的方法,例如:對齊方式(左、右、居中、兩端對齊)、縮進和間距。ParagraphStyle 只與文字的段落格式相關,不包含文字本身或字符樣式。setParagraphAlignment())、縮進(setIndentStart())、和行距。Ex: 將文字框中的文字設定置中對齊

function setParagraphAlignment() {
  var presentation = SlidesApp.getActivePresentation();
  var slide = presentation.getSlides()[0];
  var shape = slide.getShapes()[0]; // 假設第一個形狀是我們要操作的
  var textRange = shape.getText(); // 獲取形狀內的文字範圍
  var paragraphs = textRange.getParagraphs(); // 獲取所有段落
  for (var i = 0; i < paragraphs.length; i++) {
    var paragraphRange = paragraphs[i].getRange(); // 獲取每個段落的文字範圍
    paragraphRange.getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER); // 設定段落居中對齊
    }
  }

PageElement, Shape, TextRange, ParagraphStyle 四者之間的關係和差異PageElement 是所有幻燈片元素的基類。每個元素(形狀、圖片等)都是 PageElement 的一個實例。Shape 是 PageElement 的一個子類,專門用於代表幻燈片上的形狀。Shape 可以包含文字,而其他 PageElement(如圖片)不一定。TextRange 是 Shape 內的文字範圍,用於操作形狀中的文字內容和格式。它可以包含多個段落。ParagraphStyle 是 TextRange 的一部分,用於設置和調整段落的樣式和格式。了解完 Slide 的基本用法後,我們明天就來進入實戰演練吧🥳🥳🥳